package com.marktotop.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.marktotop.entity.MenuRole;
import com.marktotop.mapper.MenuRoleMapper;
import com.marktotop.response.ResultBean;
import com.marktotop.service.IMenuRoleService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author marktotop
 * @since 2021-05-23
 */
@Service
public class MenuRoleServiceImpl extends ServiceImpl<MenuRoleMapper, MenuRole> implements IMenuRoleService {

    @Autowired
    private MenuRoleMapper menuRoleMapper;

    /**
     * 更新角色菜单
     *      使用事务处理
     *          * 删除该角色id下的所有菜单
     *          * 重新关联新的菜单组给角色
     *
     * @param rid  角色id
     * @param mids 菜单id
     * @return
     */
    @Override
    @Transactional
    public ResultBean updateMenuRole(Integer rid, Integer[] mids) {
        // 第一步: 删除该角色id下的所有菜单
        menuRoleMapper.delete(new QueryWrapper<MenuRole>().eq("rid", rid));
        // 第二步: 判断传入的 mids 是否满足条件
        if (null == mids || 0 == mids.length){
            return ResultBean.ok().message("已成功更新该角色的菜单列表！");
        }
        // 第三步: 批量更新传入的 mids
        Integer records = menuRoleMapper.insertRecords(rid, mids);
        if (records == mids.length){
            return ResultBean.ok().message("已成功更新该角色的菜单列表！");
        }
        return ResultBean.error().message("更新角色菜单列表失败，请重试！");
    }
}
